package com.pig4cloud.pigx.contract.utils;

import org.springframework.http.*;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

/**
 * http请求工具类
 */
public class HttpUtils {
	/**
	 * 向目的URL发送post请求
	 * @param url       目的url
	 * @param params    发送的参数
	 * @return  AdToutiaoJsonTokenData
	 */
	public static String sendPostRequest(String url, Object params){
		RestTemplate client = new RestTemplate();
		//新建Http头，add方法可以添加参数
		HttpHeaders headers = new HttpHeaders();
		//设置请求发送方式
		HttpMethod method = HttpMethod.POST;
		// 以表单的方式提交
		headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
		//将请求头部和参数合成一个请求
		HttpEntity<Object> requestEntity = new HttpEntity<>(params, headers);
		//执行HTTP请求，将返回的结构使用String 类格式化（可设置为对应返回值格式的类）
		ResponseEntity<String> response = client.exchange(url, method, requestEntity, String.class);

		return response.getBody();
	}

	/**
	 * 向目的URL发送get请求
	 * @param url       目的url
	 * @param params    发送的参数
	 * @return  String
	 */
	public static Object sendGetRequest(String url, MultiValueMap<String, Object> params) {
		RestTemplate client = new RestTemplate();

		HttpMethod method = HttpMethod.GET;
		HttpHeaders headers = new HttpHeaders();
		// 以表单的方式提交
		headers.setContentType(MediaType.APPLICATION_JSON);
		//将请求头部和参数合成一个请求
		HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params,headers);
		//执行HTTP请求，将返回的结构使用String 类格式化
		ResponseEntity<Object> response = client.exchange(url, method, requestEntity, Object.class);

		return response.getBody();
	}
}
